perm filename EXTFOR.AX[258,JMC] blob
sn#068076 filedate 1973-10-22 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00007 ENDMK
C⊗;
% Axioms for extensional forms %
AXIOM EXTFORM:
∀e.(isextform(e) ⊃ isset(dom(e)));
∀e.(isextform(e) ⊃ isset(vars(e)));
∀e.(isextform(e) ⊃ (∀x.xεvars(e)⊃isvar(x)));
∀v.(isvar(v) ⊃ isextform(v));
∀v.(isvar(v) ⊃ vars(v)={v});
∀s.(isstate(s) ≡ ismap(s) ∧ ∀x.(xεdomain(s) ⊃ isvar(x) ∧ ap(s,x)εdom(x)));
∀s x u.(isstate(s)∧isvar(x)∧uεdom(x) ⊃ isstate(assign(x,u,s)));
∀s x u.(isstate(s)∧isvar(x)∧uεdom(x) ⊃ domain(assign(x,u,s))={x}∪domain(s));
∀s x u.(isstate(s)∧isvar(x)∧uεdom(x) ⊃ ap(assign(x,u,s),x)=u);
∀s x u.(isstate(s)∧isvar(x)∧uεdom(x) ⊃ ∀v.(¬v=x ∧ vεdomain(s)
⊃ ap(assign(x,u,s),v)=ap(s,v)));
∀s e.(isstate(s)∧isextform(e)∧vars(e)⊂domain(s) ⊃ value(e,s)εdom(e));
∀s x.(isstate(s)∧isvar(x) ⊃ value(x,s)=ap(s,x));
CONST:
∀x y.(xεy ⊃ isextform(mkconst(x,y)));
∀x y.(xεy ⊃ dom(mkconst(x,y))=y);
∀x y.(xεy ⊃ vars(mkconst(x,y))=NULLSET);
∀x y.(xεy ⊃ ∀s.(isstate(s) ⊃ value(mkconst(x,y),s)=x));
APP:
∀f e u v.(isextform(f)∧isextform(e)∧dom(f)=(u→v)∧dom(e)=u ⊃ isextform(ap2(f,e)));
∀f e u v.(isextform(f)∧isextform(e)∧dom(f)=(u→v)∧dom(e)=u ⊃ dom(ap2(f,e))=v);
∀f e u v.(isextform(f)∧isextform(e)∧dom(f)=(u→v)∧dom(e)=u ⊃
vars(ap2(f,e)) ⊂ vars(f)∪vars(e));
∀f e u v.(isextform(f)∧isextform(e)∧dom(f)=(u→v)∧dom(e)=u
⊃ ∀s.(isstate(s) ∧ (vars(f) ⊂ domain(s)) ∧ (vars(e) ⊂ domain(s))
⊃ value(ap2(f,e),s) = ap(value(f,s),value(e,s))));
EXTEN:
∀e1 e2.(isextform(e1)∧isextform(e2)
∧ ∀s.(isstate(s) ∧ vars(e1)⊂domain(s)∧vars(e2)⊂domain(s) ⊃
value(e1,s)=value(e2,s)) ⊃ e1=e2);
EXTEND:
∀s1 s2.(isstate(s1)∧isstate(s2) ⊃ (extends(s1,s2) ≡
domain(s2)⊂domain(s1) ∧ ∀x.(xεdomain(s2) ⊃ ap(s1,x)=ap(s2,x))));
∀e s1 s2.(isextform(e)∧isstate(s1)∧isstate(s2)∧vars(e)⊂domain(s2)∧extends(s1,s2)
⊃ value(e,s1)=value(e,s2));
LAMBDA:
∀ x e.(isvar(x)∧isextform(e) ⊃ isextform(lambda(x,e)));
∀ x e.(isvar(x)∧isextform(e) ⊃ dom(lambda(x,e))=(dom(x)→dom(e)));
∀ x e.(isvar(x)∧isextform(e) ⊃ vars(lambda(x,e))⊂vars(e)-{x});
∀ x e.(isvar(x)∧isextform(e) ⊃ ∀s.(isstate(s)∧vars(lambda(x,e))⊂domain(s)
⊃ ∀y.(yεdom(x) ⊃ ap(value(lambda(x,e),s),y)
= value(e,assign(x,y,s)))));
SUBST:
∀e1 x e2.(isextform(e1)∧isvar(x)∧isextform(e2)∧dom(e1)=dom(x) ⊃
isextform(subst(e1,x,e2)));
∀e1 x e2.(isextform(e1)∧isvar(x)∧isextform(e2)∧dom(e1)=dom(x) ⊃
dom(subst(e1,x,e2))=dom(e2));
∀e1 x e2.(isextform(e1)∧isvar(x)∧isextform(e2)∧dom(e1)=dom(x) ⊃
vars(subst(e1,x,e2))⊂vars(e1)∪(vars(e2)-{x}));
∀e1 x e2.(isextform(e1)∧isvar(x)∧isextform(e2)∧dom(e1)=dom(x) ⊃
∀s.(isstate(s)∧vars(subst(e1,x,e2)⊂domain(s)
⊃ value(subst(e1,x,e2),s) = value(e2,assign(x,value(e1,s),s))));
CONVERT:
∀x e1 e2.(isvar(x)∧isextform(e1)∧isextform(e2)∧dom(x)=dom(e2)
⊃ ap2(lambda(x,e),e2)=subst(e2,x,e1));
FORMINDUCTION:
∀x.(isvar(x)⊃P(x)) ∧
∀x y.(xεy ⊃ P(mkconst(x,y))) ∧
∀f e u v.(isextform(f)∧isextform(e)∧dom(f)=(u→v)∧dom(e)=v∧P(f)∧P(e)⊃P(ap2(f,e))) ∧
∀x e.(isvar(x)∧isextform(e)∧P(e) ⊃ P(lambda(x,e))
⊃ ∀e.(isextform(e) ⊃ P(e));